/*
 * @Description:
 * @Author: fhw
 * @Date: 2023-02-21 20:39:33
 */
import { ApiProperty } from '@nestjs/swagger';
import { AdminUser } from 'src/modules/admin-user/entities/admin-user.entity';
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  ManyToMany,
  OneToMany,
  CreateDateColumn,
  UpdateDateColumn,
  JoinColumn,
} from 'typeorm';
@Entity({ name: 'role' })
export class RoleEntity {
  @PrimaryGeneratedColumn()
  id: number;

  /** 角色名称 */
  @ApiProperty({ example: 'rolename', description: '角色名称' })
  @Column({ type: 'varchar', comment: '角色名称', length: 500 })
  rolename: string;

  /** 是否启用。0：否，1：是 */
  @ApiProperty({
    example: 'isEnable',
    description: '是否启用。0：否，1：是',
    default: 1,
  })
  @Column({
    type: 'enum',
    comment: '是否启用。0：否，1：是',
    enum: [0, 1],
    default: 1,
  })
  isEnable: number;

  /** 描述 */
  @ApiProperty({ example: 'description', description: '描述' })
  @Column({ type: 'varchar', comment: '描述' })
  description: string;

  /** 菜单 */
  @ApiProperty({ example: 'menu', description: '菜单' })
  @Column({ type: 'text', comment: '菜单', nullable: true })
  menu: string;

  @OneToMany(() => AdminUser, (user) => user.roles)
  users: AdminUser[];

  /** 创建时间 */
  @ApiProperty({ example: 'createDate', description: '创建时间' })
  @CreateDateColumn({
    type: 'datetime',
    comment: '创建时间',
  })
  createDate: string;

  /** 更新时间 */
  @ApiProperty({ example: 'updateDate', description: '更新时间' })
  @UpdateDateColumn({
    type: 'datetime',
    comment: '更新时间',
  })
  updateDate: string;

  /** 创建人 */
  @ApiProperty({ example: 'createById', description: '创建人' })
  @Column({ type: 'int', comment: '创建人' })
  createById: number;
  @ManyToMany(() => AdminUser, (adminUser) => adminUser.rolesCreateBy) // 指定另一面作为第二个参数
  @JoinColumn()
  createBy: AdminUser;
}
